Non-volatile memories (NVMs) have been used as auxiliary storage devices or storages in recent information processing systems. Non-volatile memories are broadly divided into flash memories for data access in units of large data sizes and non-volatile random access memories (Non-volatile RAMs) to which high-speed random access is possible in units of smaller data sizes. Here, NAND flash memories are exemplified as a representative example of flash memories. On the other hand, resistive RAMs (ReRAMs), phase-change RAMs (PCRAMs), magnetoresistive RAMs (MRAMs), and the like are exemplified as examples of non-volatile random access flash memories.
It is known that errors occur in data written to such a non-volatile memory due to various causes such as fluctuations of current in memory cells or changes in the characteristics of memory cells due to repeated access. The former phenomenon is called random telegraph noise (RTN) and the latter is called read disturb (RD). An error due to RTN is called an “RTN error” and an error due to RD is called an “RD error”. A memory controller which detects presence or absence of such errors and corrects the errors using an error detection and correction code (ECC) has been suggested (for example, see Patent Literature 1). A memory system which performs, as a refresh process, a process of rewriting data to a memory cell in which an error has occurred has also been suggested (for example, see Patent Literature 2). Through this refresh process, it is possible to recover from errors in memory cells.